#include<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define re register int
using namespace std;
inline int read(){
	int x=0,w=1;
	char ch=getchar();
	while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
	if(ch=='-') w=-1,ch=getchar();
	while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-48,ch=getchar();
	return x*w;
}
const double Pi=acos(-1.0);        //π的值
const double EPS=1E-2;            //控制精度
struct Point {
    double x,y;
}P[3];
double len[3],a[3];        //len为边长，a为圆心角角度。
double Get(int i,int j) {    //求两点之间距离
    return sqrt((P[i].x-P[j].x)*(P[i].x-P[j].x)+(P[i].y-P[j].y)*(P[i].y-P[j].y));
}
double gcd(double a,double b) {    //double类型的最大公约数
    if(fabs(b)<EPS)
        return a;
    if(fabs(a)<EPS)
        return b;
    return gcd(b,fmod(a,b));    //fmod(a,b), double类型的取模
}
int main() {
    double t=0.0,A,r;
    for(int i=0;i<3;++i)
        scanf("%lf%lf",&P[i].x,&P[i].y);
    for(int i=0;i<3;t+=len[i],++i)
        len[i]=Get(i,(i+1)%3);
    t/=2;
    A=sqrt(t*(t-len[0])*(t-len[1])*(t-len[2]));    //求三角形面积
    r=len[0]*len[1]*len[2]/(4*A);                //求三角形外接圆半径
    for(int i=0;i<2;++i)
        a[i]=acos(1-len[i]*len[i]/(2*r*r));        //求圆心角度数
    a[2]=2*Pi-a[0]-a[1];                        //为防止误差，最后一个圆心角根据三角形三边作为弦所对的三个圆心角之和为360°求出
    t=gcd(a[0],gcd(a[1],a[2]));                    //求圆心角的最大公约数
    printf("%.6lf",(Pi*r*r*sin(t))/t);            //求正多边形面积
    return 0;
}